const jwt = require('jsonwebtoken')

// sign用于生成token，第二个参数是加密的密钥（可以自行定义）
function sign(option) {
    return jwt.sign(option, '4536mi', {
        expiresIn: 1800 //半小时之后过期
    })
}

// token校验
let verify = (isAdmin) => (ctx, next) => {
    // 获取到前端传递的token
    let jwtToken = ctx.req.headers.authorization
    // console.log(jwtToken);
    if (jwtToken) {
        // 该token的合法性
        jwt.verify(jwtToken, '4536mi', function (err, decoded) {
            if (err) {
                ctx.body = {
                    status: 401,
                    message: 'token失效'
                }
            } else {
                if (isAdmin) {
                    let { admin } = decoded
                    if (admin) {
                        next()
                    } else {
                        ctx.body = {
                            status: 401,
                            message: '管理员权限不足'
                        }
                    }
                } else {
                    next()
                }
            }
        })
    } else {
        ctx.body = {
            status: 401,
            message: '请提供token'
        }
    }
}

module.exports = {
    sign,
    verify
}